home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
Point.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-04-27
|
3KB
|
121 lines
#ifndef Point_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define Point_First
#include "Types.h"
#include "Stream.h"
class Point {
public:
int x, y;
public:
Point()
{ x= y= 0; }
Point(int xy)
{ x= y= xy; }
Point(int sx, int sy)
{ x= sx; y= sy; }
Point(float sx, float sy)
{ x= (int)sx; y= (int)sy; }
int &operator[](bool b)
{ if (b) return y; else return x; }
friend Point operator+(Point p1, Point p2)
{ return Point(p1.x + p2.x, p1.y + p2.y); }
friend Point operator-(Point p)
{ return Point(-p.x, -p.y); }
friend Point operator-(Point p1, Point p2)
{ return Point(p1.x - p2.x, p1.y - p2.y); }
friend Point operator*(Point p1, Point p2)
{ return Point(p1.x * p2.x, p1.y * p2.y); }
friend Point operator/(Point p1, Point p2)
{ return Point(p1.x / p2.x, p1.y / p2.y); }
friend Point Scale(Point p, Point num, Point denom);
friend Point Scale(Point p, float sx, float sy);
Point operator+=(Point p)
{ x+= p.x; y+= p.y; return *this; }
Point operator-=(Point p)
{ x-= p.x; y-= p.y; return *this; }
Point operator*=(Point p)
{ x*= p.x; y*= p.y; return *this; }
Point operator/=(Point p)
{ x/= p.x; y/= p.y; return *this; }
Point Half() const;
friend bool operator==(Point p1, Point p2)
{ return (bool) (p1.x == p2.x && p1.y == p2.y); }
friend bool operator!=(Point p1, Point p2)
{ return (bool) (p1.x != p2.x || p1.y != p2.y); }
friend bool operator>(Point p1, Point p2)
{ return (bool) (p1.x > p2.x && p1.y > p2.y); }
friend bool operator<(Point p1, Point p2)
{ return (bool) (p1.x < p2.x && p1.y < p2.y); }
friend bool operator>=(Point p1, Point p2)
{ return (bool) (p1.x >= p2.x && p1.y >= p2.y); }
friend bool operator<=(Point p1, Point p2)
{ return (bool) (p1.x <= p2.x && p1.y <= p2.y); }
friend Point Abs(Point);
friend Point Sign(Point);
friend Point Min(Point, Point);
friend Point Max(Point, Point);
friend Point Range(Point, Point, Point);
friend Point Half(Point);
friend float Phi(Point);
friend float Length(Point);
// return sqrt(p.x*p.x + p.y*p.y);
friend Point PolarToPoint(double ang, double fx, double fy);
// return Point(fx*cos(ang), fy*sin(ang));
friend void Swap(Point &p1, Point &p2);
friend Point Flip(Point &p);
friend OStream& operator<< (OStream &s, Point p);
friend IStream& operator>> (IStream &s, Point &p);
char *AsString() const;
};
SimpleMetaDef(Point);
#ifndef FakeExternalDecl
extern const Point gPoint_1, gPoint0, gPoint1, gPoint2, gPoint3, gPoint4,
gPoint5, gPoint6, gPoint7, gPoint8, gPoint10, gPoint16, gPoint32, gPoint64;
#endif
#endif